Bingo, Computer Graphics & Game Developer

Backface culling

本文的三角形相交测试算法为Möller-Trumbore algorithm

这里的back-facing culling表示的是若此三角形背对着观察者,那么就直接在相交测试中跳过,返回false。这在正常逻辑思维下是正常的,直到遇到了Refraction的材质。

首先是正常参数方程定义的两个球的对比,基本上除了目前未调正确的Fresnel以外,折射部分是没有太大问题的。

3

Atmos的渲染结果

Mitsuba的渲染结果


一旦将其改为网格形成的球体,结果令人吃惊的不一致。

hello

Atmos的渲染结果

Mitsuba的渲染结果


在ScatchPixel原文中有这样一段

“… Remember as well that the user might want to cull (discard) back-facing triangles. …”用户自定义背面剔除

事实上,默认的三角形理应是双面的,因为但当类似于玻璃材质模型光线在几何体内部时必然会遇到光线从背后穿过三角形的问题。一开始我并没有意识到这是三角形的背面剔除的问题,球上折射的内容让我误以为是因为法线的错误问题。

正确的不跳过背面三角形的Atmos渲染结果如下

最终,提供材质球的修复前后对比。

BUG非常隐晦,一开始的确完全没有想到是剔除的问题

错误结果

正确结果


坑爹,这BUG找了老子一整晚